<?php
namespace app\model;
use tpScriptVueCurd\base\model\BaseModel;
use tpScriptVueCurd\base\model\VueCurlModel;
use tpScriptVueCurd\field\DateField;
use tpScriptVueCurd\field\RadioField;
use tpScriptVueCurd\field\StringField;
use tpScriptVueCurd\field\TextField;
use tpScriptVueCurd\field\TreeSelect;
use tpScriptVueCurd\FieldCollection;
use tpScriptVueCurd\option\generate_table\GenerateTableOption;
use tpScriptVueCurd\option\ModelInfoAuth;

class User extends BaseModel
{
    /**
     * 表相关的控制器
     * @return string
     */
    public static function getControllerClass(): string
    {
        return \app\controller\User::class;
    }
    /**
     * 表字段配置
     * @return FieldCollection
     */
    public function fields(): FieldCollection
    {
        return new FieldCollection([
            StringField::init('name','姓名')->listShow(true)->required(true),
            RadioField::init('sex', '性别')->items(['男', '女'])->listShow(true)->required(true),
            DateField::init('date','出生日期')->listShow(true),
            TextField::init('address', '住址'),
            TreeSelect::init('area_id','树形选择器')
                //设置选项
                ->items([
                    ['value'=>1,'pvalue'=>0,'title'=>'第一级1'],
                    ['value'=>11,'pvalue'=>1,'title'=>'第二级1'],
                    ['value'=>12,'pvalue'=>1,'title'=>'第二级2'],
                    ['value'=>13,'pvalue'=>1,'title'=>'第二级3'],
                    ['value'=>101,'pvalue'=>12,'title'=>'第三级1'],
                    ['value'=>102,'pvalue'=>12,'title'=>'第三级2'],
                    //禁用选项
                    ['value'=>103,'pvalue'=>12,'title'=>'第三级3','disabled'=>true],
                    ['value'=>2,'pvalue'=>0,'title'=>'第一级2'],
                    ['value'=>3,'pvalue'=>0,'title'=>'第一级3'],
                    ['value'=>4,'pvalue'=>0,'title'=>'第一级4'],
                ])
                //是否可多选
                ->multiple(false)
                //是否可选中父级
                ->canCheckParent(false)
                //弹出框的高度
                ->dropdownMaxHeight(300)
                //多选的时候才会有效，checkable 状态下节点选择完全受控（意思是：如果设置为true，选中了父节点，子节点不再默认全部选中）
                ->treeCheckStrictly(false)
                ->listShow(true),
        ]);
    }
    /**
     * 是否自动创建数据库
     * @param GenerateTableOption $table
     * @return bool
     */
    public function generateTable(GenerateTableOption $table): bool
    {
        //当字段改变时，是否更改数据库表相关字段
        $table->setModifyColumn(true);
        return true;
    }
}

